<?php require_once(BASEPATH.'application/controllers/validaciones.php');
//pagos
class pagos extends validaciones {

	function pagos(){
		parent::Controller();
		$this->load->library('rapyd');
		$this->load->library('Cuenta');
	}
    function index() {
        
		redirect('finanzas/pagos/filteredgrid');
	}
	function filteredgrid() {
		
        $this->rapyd->load('datagrid2','datafilter');

		$atts = array(
			'width'      => '800',
			'height'     => '600',
			'scrollbars' => 'yes',
			'status'     => 'yes',
			'resizable'  => 'yes',
			'screenx'    => '0',
			'screeny'    => '0'
		);

		$modbus=array(
			'tabla'   =>'sprv',
			'columnas'=>array(
			'proveed' =>'C&oacute;digo Proveedor',
			'nombre'=>'Nombre',
			'rif'=>'RIF'),
			'filtro'  =>array('proveed'=>'C&oacute;digo Proveedor','nombre'=>'Nombre'),
			'retornar'=>array('proveed'=>'cod_prv'),
			'titulo'  =>'Buscar Proveedor');

		$boton=$this->datasis->modbus($modbus);
        
        $this->rapyd->uri->keep_persistence();
        
		$filter = new DataFilter('B&uacute;squeda de Proveedor');
        $select=array('moneda','transac','cajachica','cod_prv','totalg','nombre','tipo_doc','numero','fecha','SUM(subtotal) subtotal',
        'SUM(monto) as monto','SUM(impuesto) as impuesto','SUM(abonos) as abonos','vence','SUM(monto-abonos) as resta',
        'COUNT(*) AS cant');
       
		$filter->db->select($select);
		$filter->db->from("sprm AS a");
        //$filter->db->where("monto > abonos");
        $filter->db->where("cajachica",'N');
        $filter->db->where("tipo_doc NOT IN ('NC','AN')");
        $filter->db->groupby('cod_prv,moneda');	
		$filter->db->orderby('cod_prv');	

		$filter->numero = new inputField('N&uacute;mero', 'numero');
		$filter->numero->size=20;

		$filter->proveedor = new inputField('Proveedor','cod_prv');
		$filter->proveedor->append($boton);
		$filter->proveedor->size=20;
		
		$filter->moneda = new dropdownField("Moneda", "moneda");
		$filter->moneda->style='width:200px;';
		$filter->moneda->option("","Todas las monedas" );
		$filter->moneda->options("SELECT codigo,descrip FROM moneda ORDER BY codigo");

		$filter->buttons('reset','search');
		$filter->build();

		$grid = new DataGrid2();
		$grid->order_by('numero','desc');
		$grid->per_page = 10;

		$uri = anchor('finanzas/pagos/dataedit/create/<#cod_prv#>/N/N/<#moneda#>/<#moneda#>','<#cod_prv#>');
        
        $grid->column('Proveedor',$uri);
		$grid->column('Nombre'  ,'nombre');
		$grid->column("Moneda"              ,"moneda","moneda"  ,"align='center'");
		$grid->column('Sub-Total','<nformat><#subtotal#></nformat>' ,'align=\'right\'');
        $grid->column('Impuesto'     ,'<nformat><#impuesto#></nformat>' ,'align=\'right\'');
        $grid->column('Total'   ,'<nformat><#totalg#></nformat>','align=\'right\'');
		//$grid->column('Neto'   ,'<nformat><#monto#></nformat>','align=\'right\'');
        //$grid->column('Abonos'   ,'<nformat><#abonos#></nformat>','align=\'right\'');
        $grid->column('Resta'   ,'<nformat><#resta#></nformat>','align=\'right\'');
        $grid->column_orderby('Cant. de  Facturas'   ,'cant','cant');

		$grid->totalizar('subtotal','impuesto','monto','abonos','resta');
		$grid->add('finanzas/pagos/proveedores/create','Todos los Proveedores');
		//$grid->add('finanzas/pagos/dataedit/create/CACHI/S/S/01/01','Pagos de Caja Chica');
		
		$grid->build();
		//echo $grid->db->last_query();
        
		$data['content'] = $grid->output;
		$data['filtro']  = $filter->output;
		$data['tabla']  = "";
		
		$data['head']    = $this->rapyd->get_head();
		$data['title'] = heading('Egresos de Provedores');
		$this->load->view('view_ventanas', $data);
	}
	function planillas($estado,$moneda){
        
		$this->rapyd->load('dataobject','datadetails');
        
        $do = new DataObject('itppro');
		$do->rel_one_to_many('itpprot', 'itpprot', 'id');
				
		$edit = new DataDetails('Pagos', $do);
		$edit->back_url = site_url('finanzas/sprm/filteredgrid');
		$edit->set_rel_title('itpprot','Cuenta <#o#>');
		
		$modbus=array(
			'tabla'   =>'cpla2',
			'columnas'=>array(
				'cuenta'  =>'Cuenta',
				'descrip' =>'Descripci&oacute;n',
				'ajuste'  => 'Llevar Ajuste',
				'contrapartida'  => 'Contrapartida',
				'clase'  => 'Clase',
				'costo'  => 'Costo',
				'tercero'  => 'Tercero',
				'extranjeria'  => 'Extranjeria'
				),
			'filtro'  =>array('cuenta'  =>'Cuenta','descrip'=>'Descripci&oacute;n'),
			'retornar'=>array(
				'cuenta' =>'cuenta_rein'),
			'p_uri'   => array(4=>'<#i#>'),
			'titulo'  => 'Buscar Cuenta'
		);
		$btn2=$this->datasis->p_modbus($modbus);
        
        $modbus_sprv=array(
			'tabla'   =>'scli',
			'columnas'=>array(
                'cliente' =>'C&oacute;digo cod_cli',
                'nombre'=>'Nombre',
                'rifci'=>'RIF'),
			'filtro'  =>array('cod_cli'=>'C&oacute;digo cod_cli','nombre'=>'Nombre'),
			'retornar'=>array(
                'cliente'=>'proveedc'),
                'p_uri'   => array(4=>'<#i#>'),
			'titulo'  =>'Buscar cod_cli');

		$boton2=$this->datasis->p_modbus($modbus_sprv);
                
        $modbus=array(
			'tabla'   =>'cpla',
			'columnas'=>array(
				'cuenta'  =>'Cuenta',
				'descrip' =>'Descripci&oacute;n',
				'ajuste'  => 'Llevar Ajuste',
				'contrapartida'  => 'Contrapartida',
				'clase'  => 'Clase',
				'costo'  => 'Costo',
				'tercero'  => 'Tercero',
				'extranjeria'  => 'Extranjeria'
				),
			'filtro'  =>array('cuenta'  =>'Cuenta','descrip'=>'Descripci&oacute;n'),
			'retornar'=>array(
				'cuenta' =>'cuenta_<#i#>',
				'descrip'=>'desca_<#i#>',
				),
			'p_uri'   => array(4=>'<#i#>'),
			'titulo'  => 'Buscar Cuenta'
		);
		
        $btn=$this->datasis->p_modbus($modbus,'<#i#>');
        
        $modbus_sprv=array(
			'tabla'   =>'sprv',
			'columnas'=>array(
	                'rif'=>'RIF',		
                'proveed' =>'C&oacute;digo Proveedor',
                'nombre'=>'Nombre'),
			'filtro'  =>array('rif'=>'RUC','nombre'=>'Nombre'),
			'retornar'=>array(
                'proveed'=>'proveed',
                'rif'=>'rif',
                'nombre'=>'nombre'),
                'p_uri'   => array(4=>'<#i#>'),
			'titulo'  =>'Buscar Proveedor');

		$boton=$this->datasis->p_modbus($modbus_sprv);
                        
        if($edit->_status=='create'){
        
			$mSQL="SELECT * FROM sprm WHERE tipo_doc='L' AND seriei ='009' AND monto > abonos AND moneda='$moneda' ORDER BY monto DESC";

		}else{
						
			if(empty($moneda)) $moneda=$estado;
	
			
			$mSQL="SELECT * FROM sprm WHERE tipo_doc='L' AND seriei ='009' AND monto > abonos AND moneda='$moneda' ORDER BY monto DESC";
			
		}

		$edit->pre_process('insert' ,'_pre_insert');
		$edit->post_process('insert','_post_insert');
		$edit->pre_process('delete' ,'_pre_delete');
				
		$edit->id = new hiddenField(" ", 'id');
        
        $edit->tipo2 = new  dropdownField ('Tipo de Documento', 'tipo2');
        $edit->tipo2->db_name='tipo';
		$edit->tipo2->option('AP',"ADELANTO DE PLANILLAS");
		        
        $edit->fecha = new DateonlyField("Fecha de Pago", "fecha","Y-m-d");
		$edit->fecha->insertValue = date("Y-m-d");
        $edit->fecha->rule= "required";
		$edit->fecha->size = 10;
		//$edit->fecha->rule= "callback_cambio";
        
        $edit->fechac = new DateonlyField("Fecha de Cambio", "fechac","Y-m-d");
		$edit->fechac->insertValue = date("Y-m-d");
        $edit->fechac->rule= "required";
		$edit->fechac->size = 10;
		$edit->fechac->rule= "callback_cambio";
                
		$edit->serie = new dropdownField("Comprobante", "serie");
		$edit->serie->option("","Seleccione comprobante" );
		$edit->serie->options("SELECT codigo, CONCAT_WS('-',codigo,descrip) AS descrip FROM bancos ORDER BY codigo");
		$edit->serie->rule= "required";
		$edit->serie->onchange = "numegreso();";
        $edit->serie->style='width:200px;';

		$edit->numero = new inputField("N&uacute;mero", "numero");
		$edit->numero->size = 12;
		//$edit->numero->rule= "required";
        $edit->numero->css_class ='inputnum';
		$edit->numero->maxlength=11;
		$edit->numero->rule= "callback_chexiste";
		//$edit->numero->when=array('show');

		$edit->proveed = new inputField("C&oacute;digo", "proveed");
		$edit->proveed->size = 7;
		$edit->proveed->maxlength=5;
        $edit->proveed->append($boton);
        $edit->proveed->rule= "required";
        $edit->proveed->readonly  = true;
        
        $edit->cajachica = new  dropdownField ('Caja Chica','cajachica');
        $edit->cajachica->option('N','No esta relacionado con caja chica');
        //$edit->cajachica->option('S','Si esta relacionado con caja chica');
        $edit->cajachica->style='width:260px;';
        //$edit->cajachica->insertValue = $cajachica;
        
        $edit->detraccion = new  dropdownField ('Detracci&oacute;n','detraccion');
        $edit->detraccion->option('N','No es un pago por detracci&oacute;n');
        //$edit->detraccion->option('S','Si es un pago por detracci&oacute;n');
        $edit->detraccion->style='width:260px;';
        //$edit->detraccion->insertValue = $detraccion;
		
		$edit->nombre = new inputField("Nombre", "nombre");
		$edit->nombre->size =  40;
		$edit->nombre->maxlength=80;
        $edit->nombre->readonly  = true;
    
		$edit->rif = new inputField("RUC", "rif");
		$edit->rif->size =  20;
		$edit->rif->maxlength=20; 
        $edit->rif->readonly  = true;
        
        $edit->condi1 = new inputField('Observaci&oacute;n', 'condi1');
		$edit->condi1->size =60;
		$edit->condi1->maxlength=50;
		$edit->condi1->rule = 'required';
        
        $edit->ccosto = new  dropdownField ('Centro de Costo', 'ccosto');
        $edit->ccosto->option("0001","ADMINISTRACI&Oacute;N");
		$edit->ccosto->option('0002',"OPERACI&Oacute;N");
		$edit->ccosto->option('0003','IMPORTACI&Oacute;N'); 
		$edit->ccosto->style='width:200px;';    
        
        $edit->moneda = new dropdownField("Moneda", "moneda");
		$edit->moneda->style='width:230px;';
		$edit->moneda->option("","Seleccione la moneda" );
		$edit->moneda->options("SELECT codigo,descrip FROM moneda ORDER BY codigo");
		$edit->moneda->rule = 'required';
		$edit->moneda->group = "Precios";
		$edit->moneda->when=array('show');
		
		$fechac=$this->datasis->dameval("SELECT cambio FROM cambio WHERE fecha=CURDATE()");
		$edit->cambio = new inputField("Cambio", 'cambio');
		$edit->cambio->css_class ='inputnum';
		$edit->cambio->size      = 12;
		$edit->cambio->onclick = "cfecha();";
		//$edit->cambio->insertValue=$fechac;

		$edit->referen = new inputField('N&uacute;mero de Operaci&oacute;n', 'referen');
		$edit->referen->css_class ='inputnum';
		$edit->referen->size      = 20; 
		//$edit->referen->rule = 'required';
        
		$edit->monto = new inputField('Monto Total a Pagar', 'monto');
		$edit->monto->size = 15;
		$edit->monto->maxlength=15;
		$edit->monto->css_class ='inputnum';
		//$edit->monto->rule = 'required';
		$edit->monto->readonly  =true;
		        
        $edit->cuenta2 = new inputField('Cuenta', 'cuenta');
		$edit->cuenta2->size     = 12;
		$edit->cuenta2->rule     = 'required';
		//$edit->cuenta->append($btn);
		$edit->cuenta2->readonly  =true;
		$edit->cuenta2->when=array('show');
        
        $edit->cuenta_ori = new inputField('Origen del fondo', 'cuenta_ori');
        $edit->cuenta_ori->size     = 12;
        $edit->cuenta_ori->when=array('show');
        //$edit->cuenta_ori->append($btn.' Solo para adelantos');
		
		$edit->formap = new dropdownField("Medio de Pago", "formap");
		$edit->formap->style='width:200px;';
		$edit->formap->options("SELECT formap,nombre FROM formap ORDER BY formap");
       
		$edit->usuario = new autoUpdateField('usuario',$this->session->userdata('usuario'),$this->session->userdata('usuario'));
        
        //**************************
		//  Campos para el detalle
		//**************************
		
		$edit->docu = new dropdownField('Documento <#o#>', 'docu_<#i#>');
		$edit->docu->db_name  = 'docu';
		$edit->docu->options("SELECT codigo,descrip FROM tpagos");
		$edit->docu->rel_id   = 'itpprot';
		$edit->docu->style    = 'width:100%';
		
		$edit->cuenta = new inputField('Cuenta <#o#>', 'cuenta_<#i#>');
		$edit->cuenta->size     = 12;
		$edit->cuenta->maxlength= 10;
		$edit->cuenta->readonly  = true;
		$edit->cuenta->db_name  = 'cuenta';
		$edit->cuenta->rel_id   = 'itpprot';
		//$edit->cuenta->rule     = 'required';
		$edit->cuenta->append($btn);

		$edit->desca = new inputField('Descripci&oacute;n <#o#>', 'desca_<#i#>');
		$edit->desca->db_name='desca';
		$edit->desca->rel_id='itpprot';
		$edit->desca->rule = 'strtoupper';
		$edit->desca->size    = 35;
		
		$edit->ruc = new inputField('RUC <#o#>', 'ruc_<#i#>');
		$edit->ruc->db_name='ruc';
		$edit->ruc->rel_id='itpprot';
		$edit->ruc->rule = 'strtoupper';
		$edit->ruc->size    = 11;
		$edit->ruc->maxlength= 11;
		
		$edit->tipo = new dropdownField('Tipo <#o#>', 'tipo_<#i#>');
		$edit->tipo->db_name  = 'tipo';
		$edit->tipo->option("","");
		$edit->tipo->option("D","D");
		$edit->tipo->option("C","C");
		$edit->tipo->rel_id   = 'itpprot';
		$edit->tipo->rule     = 'positive';
		$edit->tipo->autocomplete=false;
		$edit->tipo->onchange ='importe(<#i#>)';
		$edit->tipo->style    = 'width:100%';
		
		$edit->importe = new inputField('Importe <#o#>', 'importe_<#i#>');
		$edit->importe->db_name='importe';
		$edit->importe->size=12;
		//$edit->importe->readonly=true;
        //$edit->importe->rule = 'required';
		$edit->importe->css_class='inputnum';
		$edit->importe->rel_id   ='itpprot';
		$edit->importe->onkeyup  ='importe(<#i#>)';
		
		$edit->creditos = new inputField('creditos <#o#>', 'creditos_<#i#>');
		$edit->creditos->db_name='creditos';
		$edit->creditos->size=12;
		$edit->creditos->css_class='inputnum';
		$edit->creditos->rel_id   ='itpprot';
		$edit->creditos->readonly=true;
		$edit->creditos->onkeyup  ='importe(<#i#>)';
		
        $edit->cuenta_rein = new inputField('Cuenta a reintegrar', 'cuenta_rein');
		$edit->cuenta_rein->size     = 12;
		$edit->cuenta_rein->append($btn2.' Cuenta a Reintegrar');
        
        $edit->proveedc = new inputField("Proveedor que debe reintegrar", "proveedc");
		$edit->proveedc->size = 12;
		$edit->proveedc->maxlength=5;
        $edit->proveedc->append($boton2.' Se debe crear como CLIENTE');
        
        $edit->rein = new inputField('Monto Reintegrado', 'rein');
		$edit->rein->size = 10;
		$edit->rein->maxlength=15;
		$edit->rein->css_class ='inputnum';
		$edit->rein->insertValue = '0';
		$edit->rein->onkeyup ='total_manual()';
        
        //$edit->buttons('save', 'undo','back');
        $edit->buttons('delete','save', 'undo', 'add_rel','back'); 	
        $edit->build();
		 
		$id=$edit->_dataobject->get("id");

        $conten['form']  =&  $edit;
        
         //echo $mSQL;
        
		IF($edit->_status=='show'){
            
			$mSQL="SELECT * FROM relacion WHERE itppro='$id'";
			$mSQL_1=$this->db->query($mSQL);
			$conten['result']=$mSQL_1->result();	
			$data['content'] = $this->load->view('view_sprm', $conten,true);
            
		}else{
			$mSQL_1=$this->db->query($mSQL);
			$conten['cantmd']=$mSQL_1->num_rows();
			$conten['result']=$mSQL_1->result();	
			$data['content'] = $this->load->view('view_pagos', $conten,true);
		}
				
		$data['title']   = heading('Pago a Proveedor '.$edit->serie->value.'-'.$edit->numero->value);

		$data['style']  = style('redmond/jquery-ui-1.8.1.custom.css');
		
		$data['script']  = script('jquery.js');
		$data['script'] .= script('jquery-ui.js');
		$data['script'] .= script('plugins/jquery.numeric.pack.js');
		$data['script'] .= script('plugins/jquery.numeric.pack.js');
		$data['script'] .= script('plugins/jquery.floatnumber.js');
		$data['script'] .= script('nformat.js');

		$data['head']    = $this->rapyd->get_head();
		$this->load->view('view_ventanas', $data);
	}
    function proveedores(){
        
        $this->rapyd->load('dataobject','datadetails');
        
        $do = new DataObject('itppro');
		$do->rel_one_to_many('itpprot', 'itpprot', 'id');
				
		$edit = new DataDetails('Pagos', $do);
		$edit->back_url = site_url('finanzas/pagos/filteredgrid');
		$edit->set_rel_title('itpprot','Cuenta <#o#>');
        
        $modbus=array(
			'tabla'   =>'cpla2',
			'columnas'=>array(
				'cuenta'  =>'Cuenta',
				'descrip' =>'Descripci&oacute;n',
				'ajuste'  => 'Llevar Ajuste',
				'contrapartida'  => 'Contrapartida',
				'clase'  => 'Clase',
				'costo'  => 'Costo',
				'tercero'  => 'Tercero',
				'extranjeria'  => 'Extranjeria'
				),
			'filtro'  =>array('cuenta'  =>'Cuenta','descrip'=>'Descripci&oacute;n'),
			'retornar'=>array(
				'cuenta' =>'cuenta_rein'),
			'p_uri'   => array(4=>'<#i#>'),
			'titulo'  => 'Buscar Cuenta'
		);
		$btn2=$this->datasis->p_modbus($modbus);
        
        $modbus_sprv=array(
			'tabla'   =>'scli',
			'columnas'=>array(
                'cliente' =>'C&oacute;digo cod_cli',
                'nombre'=>'Nombre',
                'rifci'=>'RIF'),
			'filtro'  =>array('cod_cli'=>'C&oacute;digo cod_cli','nombre'=>'Nombre'),
			'retornar'=>array(
                'cliente'=>'proveedc'),
                'p_uri'   => array(4=>'<#i#>'),
			'titulo'  =>'Buscar cod_cli');

		$boton2=$this->datasis->p_modbus($modbus_sprv);
        
        $modbus_sprv=array(
			'tabla'   =>'sprv',
			'columnas'=>array(
	                'rif'=>'RIF',		
                'proveed' =>'C&oacute;digo Proveedor',
                'nombre'=>'Nombre'),
			'filtro'  =>array('rif'=>'RUC','nombre'=>'Nombre'),
			'retornar'=>array(
                'proveed'=>'proveed',
                'rif'=>'rif',
                'nombre'=>'nombre'),
                'p_uri'   => array(4=>'<#i#>'),
			'titulo'  =>'Buscar Proveedor');

		$boton=$this->datasis->p_modbus($modbus_sprv);
            
        $modbus=array(
			'tabla'   =>'cpla',
			'columnas'=>array(
				'cuenta'  =>'Cuenta',
				'descrip' =>'Descripci&oacute;n',
				'ajuste'  => 'Llevar Ajuste',
				'contrapartida'  => 'Contrapartida',
				'clase'  => 'Clase',
				'costo'  => 'Costo',
				'tercero'  => 'Tercero',
				'extranjeria'  => 'Extranjeria'
				),
			'filtro'  =>array('cuenta'  =>'Cuenta','descrip'=>'Descripci&oacute;n'),
			'retornar'=>array(
				'cuenta' =>'cuenta_<#i#>',
				'descrip'=>'desca_<#i#>',
				),
			'p_uri'   => array(4=>'<#i#>'),
			'titulo'  => 'Buscar Cuenta'
		);
		
        $btn=$this->datasis->p_modbus($modbus,'<#i#>');
        
        //$modbus1=array(
		//	'tabla'   =>'itppro',
        //        'columnas'=>array(
        //        'cuenta'=>'Cuenta',
        //        'serie'=>'Banco',
        //        'numero'=>'Numero',
		//		'fecha'=>'Fecha',
        //        'monto'=>'Monto',
        //        'aplica'=>'Aplicado',
        //        'rif'=>'RIF',		
        //        'nombre'=>'Nombre'),
		//	'filtro'  =>array('rif'=>'RUC','nombre'=>'Nombre'),
		//	'retornar'=>array(
		//		'rif' =>'ruc_<#i#>',
		//		),
		//	'p_uri'   => array(4=>'<#i#>'),
		//	'titulo'  => 'Buscar RUC'
		//);
		//
        //$btn1=$this->datasis->p_modbus($modbus1,'<#i#>');       
        
			
		$mSQL="SELECT CONCAT(tipo_doc,seriei),tipo_doc,cod_prv,seriep,numero,proveed,factura,moneda,fecha,subtotal,montodetra,
		impuesto,totalg,abonos,vence,monto FROM sprm 
		WHERE  monto > abonos AND proveed NOT IN ('SAVAR') AND
		  tipo_doc NOT IN ('AN','AB','NC','D') AND proveed NOT IN ('SAVAR','SAKJ') 
		AND CONCAT(tipo_doc,seriei)<>'L005' AND CONCAT(tipo_doc,seriei)<>'L009'AND CONCAT(tipo_doc,seriei)<>'L007'
		AND CONCAT(tipo_doc,seriei)<>'P008'AND CONCAT(tipo_doc,seriei)<>'P006'AND CONCAT(tipo_doc,seriei)<>'P003'
		ORDER BY monto DESC LIMIT 108";
               
        $script ='
            $(function() {
                $(".inputnum").numeric(".");
                $("#tipo2").change(function () { procesar(); }).change();
            });
            
            function procesar(){
                proc=$("#tipo2").val();
                //alert(proc);
                if((proc!="AB")&&(proc!="AR")){
                    $("#cuenta_ori").show();
                }else{
                    $("#cuenta_ori").hide();
                }
            }
        
		';
        
        $edit->pre_process('insert' ,'_pre_insert');
		$edit->post_process('insert','_post_insert');
		$edit->pre_process('delete' ,'_pre_delete');				
		$edit->script($script, "create");
		$edit->script($script, "modify");
		
		$edit->id = new hiddenField(" ", 'id');
        
       $edit->tipo2 = new  dropdownField ('Tipo de Documento', 'tipo2');
        $edit->tipo2->db_name='tipo';
        $edit->tipo2->option("AB","PAGO DE PROVEEDOR");
        $edit->tipo2->option('AP',"ADELANTO DE PLANILLAS");
        $edit->tipo2->option('PP',"PRESTAMOS PERSONAL");
        if($edit->_status!='create'){
            
            $edit->tipo2->option('AN',"ANTICIPO DE PROVEEDOR");
            $edit->tipo2->option('EC',"ENTREGAS A RENDIR CUENTA");
        }
        
        $edit->fecha = new DateonlyField("Fecha de Pago", "fecha","Y-m-d");
		$edit->fecha->insertValue = date("Y-m-d");
        $edit->fecha->rule= "required";
		$edit->fecha->size = 10;
		$edit->fecha->rule= "callback_cambio";
        
        //$edit->fechac = new DateonlyField("Fecha de Cambio", "fechac","Y-m-d");
		//$edit->fechac->insertValue = date("Y-m-d");
        //$edit->fechac->rule= "required";
		//$edit->fechac->size = 10;
		//$edit->fechac->rule= "callback_cambio";
        
		$edit->serie = new dropdownField("Comprobante", "serie");
		$edit->serie->option("","Seleccione comprobante" );
		$edit->serie->options("SELECT codigo, CONCAT_WS('-',codigo,descrip) AS descrip FROM bancos ORDER BY codigo");
		$edit->serie->rule= "required";
		$edit->serie->onchange = "numegreso();";
        $edit->serie->style='width:200px;';

		$edit->numero = new inputField("N&uacute;mero", "numero");
		$edit->numero->size = 12;
		$edit->numero->rule= "required";
        $edit->numero->css_class ='inputnum';
		$edit->numero->maxlength=11;
		$edit->numero->rule= "callback_chexiste";
		//$edit->numero->when=array('show');

		$edit->proveed = new inputField("C&oacute;digo", "proveed");
		$edit->proveed->size = 7;
		$edit->proveed->maxlength=5;
        $edit->proveed->append($boton);
        $edit->proveed->rule= "required";
        $edit->proveed->readonly  = true;
        
        $edit->cajachica = new  dropdownField ('Caja Chica','cajachica');
        $edit->cajachica->option('N','No esta relacionado con caja chica');
        //$edit->cajachica->option('S','Si esta relacionado con caja chica');
        $edit->cajachica->style='width:260px;';
        //$edit->cajachica->insertValue = $cajachica;
        
        $edit->detraccion = new  dropdownField ('Detracci&oacute;n','detraccion');
        $edit->detraccion->option('N','No es un pago por detracci&oacute;n');
        //$edit->detraccion->option('S','Si es un pago por detracci&oacute;n');
        $edit->detraccion->style='width:260px;';
        //$edit->detraccion->insertValue = $detraccion;
		
		$edit->nombre = new inputField("Nombre", "nombre");
		$edit->nombre->size =  40;
		$edit->nombre->maxlength=80;
        $edit->nombre->readonly  = true;
    
		$edit->rif = new inputField("RUC", "rif");
		$edit->rif->size =  20;
		$edit->rif->maxlength=20; 
        $edit->rif->readonly  = true;
        
        $edit->condi1 = new inputField('Observaci&oacute;n', 'condi1');
		$edit->condi1->size =60;
		$edit->condi1->maxlength=50;
		$edit->condi1->rule = 'required';
        
        $edit->ccosto = new  dropdownField ('Centro de Costo', 'ccosto');
        $edit->ccosto->option("0001","ADMINISTRACI&Oacute;N");
		$edit->ccosto->option('0002',"OPERACI&Oacute;N");
		$edit->ccosto->option('0003','IMPORTACI&Oacute;N'); 
		$edit->ccosto->style='width:200px;';    
        
        $edit->moneda = new dropdownField("Moneda", "moneda");
		$edit->moneda->style='width:230px;';
		$edit->moneda->option("","Seleccione la moneda" );
		$edit->moneda->options("SELECT codigo,descrip FROM moneda ORDER BY codigo");
		$edit->moneda->rule = 'required';
		$edit->moneda->group = "Precios";
		$edit->moneda->style='width:200px;'; 
		//$edit->moneda->when=array('show');
		
		$fechac=$this->datasis->dameval("SELECT cambio FROM cambio WHERE fecha=CURDATE()");
		$edit->cambio = new inputField("Cambio", 'cambio');
		$edit->cambio->css_class ='inputnum';
		$edit->cambio->size      = 12;
		$edit->cambio->onclick = "cfecha();";
		//$edit->cambio->insertValue=$fechac;
		$edit->cambio->rule = 'required';

		$edit->referen = new inputField('N&uacute;mero de Operaci&oacute;n', 'referen');
		$edit->referen->css_class ='inputnum';
		$edit->referen->size      = 20; 
		$edit->referen->rule = 'required';
        
		$edit->monto = new inputField('Monto Total a Pagar', 'monto');
		$edit->monto->size = 15;
		$edit->monto->maxlength=15;
		$edit->monto->css_class ='inputnum';
		//$edit->monto->rule = 'required';
		$edit->monto->readonly  =true;
		        
        $edit->cuenta2 = new inputField('Cuenta', 'cuenta');
		$edit->cuenta2->size     = 12;
		$edit->cuenta2->rule     = 'required';
		//$edit->cuenta->append($btn);
		$edit->cuenta2->readonly  =true;
		$edit->cuenta2->when=array('show');
        
        $edit->cuenta_ori = new inputField('Origen del fondo', 'cuenta_ori');
        $edit->cuenta_ori->size     = 12;
        $edit->cuenta_ori->when=array('show');
        //$edit->cuenta_ori->append($btn2.' Solo para adelantos');
        
        $edit->cuenta_rein = new inputField('Cuenta a reintegrar', 'cuenta_rein');
		$edit->cuenta_rein->size     = 12;
		$edit->cuenta_rein->append($btn2.' Cuenta a Reintegrar');
        
        $edit->proveedc = new inputField("Proveedor que debe reintegrar", "proveedc");
		$edit->proveedc->size = 12;
		$edit->proveedc->maxlength=5;
        $edit->proveedc->append($boton2.' Se debe crear como CLIENTE');
        
        $edit->rein = new inputField('Monto Reintegrado', 'rein');
		$edit->rein->size = 10;
		$edit->rein->maxlength=15;
		$edit->rein->css_class ='inputnum';
		$edit->rein->insertValue = '0';
		$edit->rein->onkeyup ='total_manual()';
		
		$edit->formap = new dropdownField("Medio de Pago", "formap");
		$edit->formap->style='width:200px;';
		$edit->formap->options("SELECT formap,nombre FROM formap ORDER BY formap");
       
		$edit->usuario = new autoUpdateField('usuario',$this->session->userdata('usuario'),$this->session->userdata('usuario'));
        
        //**************************
		//  Campos para el detalle
		//**************************
		$edit->docu = new dropdownField('Documento <#o#>', 'docu_<#i#>');
		$edit->docu->db_name  = 'docu';
		$edit->docu->options("SELECT codigo,descrip FROM tpagos");
		$edit->docu->rel_id   = 'itpprot';
		$edit->docu->style    = 'width:100%';
		
		$edit->cuenta = new inputField('Cuenta <#o#>', 'cuenta_<#i#>');
		$edit->cuenta->size     = 12;
		$edit->cuenta->maxlength= 10;
		$edit->cuenta->readonly  = true;
		$edit->cuenta->db_name  = 'cuenta';
		$edit->cuenta->rel_id   = 'itpprot';
		//$edit->cuenta->rule     = 'required';
		$edit->cuenta->append($btn);

		$edit->desca = new inputField('Descripci&oacute;n <#o#>', 'desca_<#i#>');
		$edit->desca->db_name='desca';
		$edit->desca->rel_id='itpprot';
		$edit->desca->rule = 'strtoupper';
		$edit->desca->size    = 35;
		
		$edit->ruc = new inputField('RUC <#o#>', 'ruc_<#i#>');
		$edit->ruc->db_name='ruc';
		$edit->ruc->rel_id='itpprot';
		$edit->ruc->rule = 'strtoupper';
        //$edit->ruc->append($btn1);
		$edit->ruc->size    = 11;
		$edit->ruc->maxlength= 11;
		//$edit->ruc->rule     = 'required';
		
		$edit->tipo = new dropdownField('Tipo <#o#>', 'tipo_<#i#>');
		$edit->tipo->db_name  = 'tipo';
		$edit->tipo->option("","");
		$edit->tipo->option("D","D");
		$edit->tipo->option("C","C");
		$edit->tipo->rel_id   = 'itpprot';
		$edit->tipo->rule     = 'positive';
		$edit->tipo->autocomplete=false;
		$edit->tipo->onchange ='importe(<#i#>)';
		$edit->tipo->style    = 'width:100%';
		
		$edit->importe = new inputField('Importe <#o#>', 'importe_<#i#>');
		$edit->importe->db_name='importe';
		$edit->importe->size=12;
		//$edit->importe->readonly=true;
        //$edit->importe->rule = 'required';
		$edit->importe->css_class='inputnum';
		$edit->importe->rel_id   ='itpprot';
		$edit->importe->onkeyup  ='importe(<#i#>)';
		
		$edit->creditos = new inputField('creditos <#o#>', 'creditos_<#i#>');
		$edit->creditos->db_name='creditos';
		$edit->creditos->size=12;
		$edit->creditos->css_class='inputnum';
		$edit->creditos->rel_id   ='itpprot';
		$edit->creditos->readonly=true;
		$edit->creditos->onkeyup  ='importe(<#i#>)';
        
        $id=$edit->_dataobject->get("id");
        
        $accion="javascript:window.location='".site_url("finanzas/pagos/proveedores/create")."'";  
        $edit->button_status('btn_cargar','Nuevo Pago',$accion,'BR','show');

        $edit->buttons('delete','save', 'undo', 'add_rel','back'); 	
        $edit->build();

        $conten['form']  =&  $edit;
        
		IF($edit->_status=='show'){
			$mSQL="SELECT * FROM relacion WHERE itppro='$id'";
			$mSQL_1=$this->db->query($mSQL);
			$conten['result']=$mSQL_1->result();	
			$data['content'] = $this->load->view('view_sprm', $conten,true);
		}else{
			$mSQL_1=$this->db->query($mSQL);
			$conten['cantmd']=$mSQL_1->num_rows();
			$conten['result']=$mSQL_1->result();	
			$data['content'] = $this->load->view('view_pagos', $conten,true);
		}
				
		$data['title']   = heading('Pago a Proveedores'.$edit->serie->value.'-'.$edit->numero->value);

		$data['style']  = style('redmond/jquery-ui-1.8.1.custom.css');
		
		$data['script']  = script('jquery.js');
		$data['script'] .= script('jquery-ui.js');
		$data['script'] .= script('plugins/jquery.numeric.pack.js');
		$data['script'] .= script('plugins/jquery.numeric.pack.js');
		$data['script'] .= script('plugins/jquery.floatnumber.js');
		$data['script'] .= script('nformat.js');

		$data['head']    = $this->rapyd->get_head();
		$this->load->view('view_ventanas', $data);
	}
    function dataedit($estado,$proveed2,$cajachica,$detraccion,$moneda,$moneda2){
		
        $this->rapyd->load('dataobject','datadetails');
        
        $modbus=array(
			'tabla'   =>'cpla2',
			'columnas'=>array(
				'cuenta'  =>'Cuenta',
				'descrip' =>'Descripci&oacute;n',
				'ajuste'  => 'Llevar Ajuste',
				'contrapartida'  => 'Contrapartida',
				'clase'  => 'Clase',
				'costo'  => 'Costo',
				'tercero'  => 'Tercero',
				'extranjeria'  => 'Extranjeria'
				),
			'filtro'  =>array('cuenta'  =>'Cuenta','descrip'=>'Descripci&oacute;n'),
			'retornar'=>array(
				'cuenta' =>'cuenta_rein'),
			'p_uri'   => array(4=>'<#i#>'),
			'titulo'  => 'Buscar Cuenta'
		);
		$btn2=$this->datasis->p_modbus($modbus);
        
        $do = new DataObject('itppro');
		$do->rel_one_to_many('itpprot', 'itpprot', 'id');
				
		$edit = new DataDetails('Pagos', $do);
		$edit->back_url = site_url('finanzas/pagos/filteredgrid');
		$edit->set_rel_title('itpprot','Cuenta <#o#>');
        
        $modbus_sprv=array(
			'tabla'   =>'scli',
			'columnas'=>array(
                'cliente' =>'C&oacute;digo cod_cli',
                'nombre'=>'Nombre',
                'rifci'=>'RIF'),
			'filtro'  =>array('cod_cli'=>'C&oacute;digo cod_cli','nombre'=>'Nombre'),
			'retornar'=>array(
                'cliente'=>'proveedc'),
                'p_uri'   => array(4=>'<#i#>'),
			'titulo'  =>'Buscar cod_cli');

		$boton2=$this->datasis->p_modbus($modbus_sprv);

        
        $modbus=array(
			'tabla'   =>'cpla',
			'columnas'=>array(
				'cuenta'  =>'Cuenta',
				'descrip' =>'Descripci&oacute;n',
				'ajuste'  => 'Llevar Ajuste',
				'contrapartida'  => 'Contrapartida',
				'clase'  => 'Clase',
				'costo'  => 'Costo',
				'tercero'  => 'Tercero',
				'extranjeria'  => 'Extranjeria'
				),
			'filtro'  =>array('cuenta'  =>'Cuenta','descrip'=>'Descripci&oacute;n'),
			'retornar'=>array(
				'cuenta' =>'cuenta_<#i#>',
				'descrip'=>'desca_<#i#>',
				),
			'p_uri'   => array(4=>'<#i#>'),
			'titulo'  => 'Buscar Cuenta'
		);
		
        $btn=$this->datasis->p_modbus($modbus,'<#i#>');
        
		$modbus_sprv=array(
			'tabla'   =>'sprv',
			'columnas'=>array(
	                'rif'=>'RIF',		
                'proveed' =>'C&oacute;digo Proveedor',
                'nombre'=>'Nombre'),
			'filtro'  =>array('rif'=>'RUC','nombre'=>'Nombre'),
			'retornar'=>array(
                'proveed'=>'proveed',
                'rif'=>'rif',
                'nombre'=>'nombre'),
                'p_uri'   => array(4=>'<#i#>'),
			'titulo'  =>'Buscar Proveedor');

		$boton=$this->datasis->p_modbus($modbus_sprv);
        
        $modbus1=array(
			'tabla'   =>'sprv',
                'columnas'=>array(
                'rif'=>'RIF',		
                'proveed' =>'C&oacute;digo Proveedor',
                'nombre'=>'Nombre'),
			'filtro'  =>array('rif'=>'RUC','nombre'=>'Nombre'),
			'retornar'=>array(
				'rif' =>'ruc_<#i#>',
				),
			'p_uri'   => array(4=>'<#i#>'),
			'titulo'  => 'Buscar RUC'
		);
		
        //$btn1=$this->datasis->p_modbus($modbus1,'<#i#>');        
                
        if($edit->_status=='create'){
        
			//Validacion para caja chica
			
			IF($cajachica=='N'){
			
				$mSQL="SELECT * FROM sprm WHERE tipo_doc NOT IN ('NC','AN') AND cod_prv='$proveed2' AND cajachica ='N' AND monto > abonos AND moneda='$moneda' ORDER BY monto DESC";
			
			}ELSE{
			
				$mSQL="SELECT * FROM sprm WHERE tipo_doc NOT IN ('NC','AN') AND cajachica ='S' AND monto > abonos AND moneda='$moneda' ORDER BY monto DESC";
				//echo $mSQL;			
			}
		
		}else{
			
			$proveed        =$edit->_dataobject->get('proveed');
			$cajachica      =$edit->_dataobject->get('cajachica');
			$detraccion     =$edit->_dataobject->get('detraccion');
			
			if(empty($detraccion)) $detraccion=$proveed2;
			if(empty($proveed)) $proveed=$estado;
			if(empty($cajachica)) $cajachica=$detraccion;
	
			 
			IF($cajachica=='S'){
			
				$mSQL="SELECT * FROM sprm  WHERE tipo_doc NOT IN ('NC','AN') AND cajachica ='S' AND monto > abonos AND moneda='$moneda' ORDER BY monto DESC ";
			
			}ELSE{
			
				IF($detraccion=='N'){
				
					$mSQL="SELECT * FROM sprm WHERE tipo_doc NOT IN ('NC','AN') AND cod_prv='$proveed' AND cajachica ='N' AND monto > abonos AND moneda='$moneda' ORDER BY monto DESC ";
				
				}else{
				
					$mSQL="SELECT * FROM sprm WHERE tipo_doc NOT IN ('NC','AN') AND cod_prv='DETRA' AND cajachica ='N' AND monto > abonos AND moneda='$moneda' ORDER BY monto DESC ";

				}
			
			}
			
			
			
			
		}
        
        //validacion para obtener datos de proveedor
        
        if(($proveed2!='DETRA')){
            
            $proveed=$this->datasis->dameval("SELECT proveed FROM sprv WHERE proveed='$proveed2'");
            $nombre=$this->datasis->dameval("SELECT nombre FROM sprv WHERE proveed='$proveed2'");
            $rif=$this->datasis->dameval("SELECT rif FROM sprv WHERE proveed='$proveed2'");
            $detraccion='N';
        
        }else{
            
            $proveed='';
            $nombre='';
            $rif='';
            $detraccion='S';
        }
        
        //echo $mSQL;	
        //Informacion de Proveedor

        
		$edit->pre_process('insert' ,'_pre_insert');
		$edit->post_process('insert','_post_insert');
		$edit->pre_process('delete' ,'_pre_delete');
			
		$edit->id = new hiddenField(" ", 'id');
        
        $edit->tipo2 = new  dropdownField ('Tipo de Documento', 'tipo2');
        $edit->tipo2->db_name='tipo';
        $edit->tipo2->option("AB","PAGO DE PROVEEDOR");
        $edit->tipo2->option('AP',"ADELANTO DE PLANILLAS");
        $edit->tipo2->option('PP',"PRESTAMOS PERSONAL");
        if($edit->_status!='create'){
            
            $edit->tipo2->option('AN',"ANTICIPO DE PROVEEDOR");
            $edit->tipo2->option('EC',"ENTREGAS A RENDIR CUENTA");
        }
		$edit->tipo2->style='width:300px;'; 
        
        $edit->fecha = new DateonlyField("Fecha de Pago", "fecha","Y-m-d");
		$edit->fecha->insertValue = date("Y-m-d");
        $edit->fecha->rule= "required";
		$edit->fecha->size = 10;
		$edit->fecha->rule= "callback_cambio";
        
        //$edit->fechac = new DateonlyField("Fecha de Cambio", "fechac","Y-m-d");
		//$edit->fechac->insertValue = date("Y-m-d");
        //$edit->fechac->rule= "required";
		//$edit->fechac->size = 10;
		//$edit->fechac->rule= "callback_cambio";
            
		$edit->serie = new dropdownField("Comprobante", "serie");
		$edit->serie->option("","Seleccione comprobante" );
		$edit->serie->options("SELECT codigo, CONCAT_WS('-',codigo,descrip) AS descrip FROM bancos ORDER BY codigo");
		$edit->serie->rule= "required";
		$edit->serie->onchange = "numegreso();";
        $edit->serie->style='width:200px;';

		$edit->numero = new inputField("N&uacute;mero", "numero");
		$edit->numero->size = 12;
		$edit->numero->rule= "required";
        $edit->numero->css_class ='inputnum';
		$edit->numero->maxlength=11;
		$edit->numero->rule= "callback_chexiste";
		//$edit->numero->when=array('show');
        
		$edit->proveed = new inputField("C&oacute;digo", "proveed");
		$edit->proveed->size = 7;
		$edit->proveed->maxlength=5;
        $edit->proveed->append($boton);
        $edit->proveed->rule= "required";
        $edit->proveed->readonly  = true;
        $edit->proveed->insertValue = $proveed;
        
        $edit->cajachica = new  dropdownField ('Caja Chica','cajachica');
        $edit->cajachica->option('N','No esta relacionado con caja chica');
        $edit->cajachica->option('S','Si esta relacionado con caja chica');
        $edit->cajachica->style='width:260px;';
        $edit->cajachica->insertValue = $cajachica;
        
        $edit->detraccion = new  dropdownField ('Detracci&oacute;n','detraccion');
        $edit->detraccion->option('N','No es un pago por detracci&oacute;n');
        $edit->detraccion->option('S','Si es un pago por detracci&oacute;n');
        $edit->detraccion->style='width:260px;';
        $edit->detraccion->insertValue = $detraccion;
		
		$edit->nombre = new inputField("Nombre", "nombre");
		$edit->nombre->size =  40;
		$edit->nombre->maxlength=80;
        $edit->nombre->insertValue = $nombre;
        $edit->nombre->readonly  = true;
    
		$edit->rif = new inputField("RUC", "rif");
		$edit->rif->size =  20;
		$edit->rif->maxlength=20; 
        $edit->rif->insertValue = $rif;
        $edit->rif->readonly  = true;
        
        $edit->condi1 = new inputField('Observaci&oacute;n', 'condi1');
		$edit->condi1->size =60;
		$edit->condi1->maxlength=50;
		$edit->condi1->rule = 'required';
        
        $edit->ccosto = new  dropdownField ('Centro de Costo', 'ccosto');
        $edit->ccosto->option("0001","ADMINISTRACI&Oacute;N");
		$edit->ccosto->option('0002',"OPERACI&Oacute;N");
		$edit->ccosto->option('0003','IMPORTACI&Oacute;N'); 
		$edit->ccosto->style='width:200px;';    
        
        $edit->moneda = new dropdownField("Moneda", "moneda");
		$edit->moneda->style='width:230px;';
		$edit->moneda->option("","Seleccione la moneda" );
		$edit->moneda->options("SELECT codigo,descrip FROM moneda ORDER BY codigo");
		$edit->moneda->rule = 'required';
		$edit->moneda->group = "Precios";
		//$edit->moneda->when=array('show');
		
		$fechac=$this->datasis->dameval("SELECT cambio FROM cambio WHERE fecha=CURDATE()");
		$edit->cambio = new inputField("Cambio", 'cambio');
		$edit->cambio->css_class ='inputnum';
		$edit->cambio->size      = 12;
		//$edit->cambio->insertValue=$fechac;
		$edit->cambio->onclick = "cfecha();";
		$edit->cambio->rule = 'required';
		//$edit->cambio->onkeyup = " totalizar3();";

		$edit->referen = new inputField('N&uacute;mero de Operaci&oacute;n', 'referen');
		$edit->referen->css_class ='inputnum';
		$edit->referen->size      = 20; 
		$edit->referen->rule = 'required';
        
		$edit->monto = new inputField('Monto Total a Pagar', 'monto');
		$edit->monto->size = 15;
		$edit->monto->maxlength=15;
		$edit->monto->css_class ='inputnum';
		//$edit->monto->rule = 'required';
		$edit->monto->readonly  =true;
		        
        $edit->cuenta2 = new inputField('Cuenta', 'cuenta');
		$edit->cuenta2->size     = 12;
		$edit->cuenta2->rule     = 'required';
		//$edit->cuenta->append($btn);
		$edit->cuenta2->readonly  =true;
		$edit->cuenta2->when=array('show');
        
        $edit->cuenta_ori = new inputField('Origen del fondo', 'cuenta_ori');
        $edit->cuenta_ori->size     = 12;
      
		$edit->formap = new dropdownField("Medio de Pago", "formap");
		$edit->formap->style='width:200px;';
		$edit->formap->options("SELECT formap,nombre FROM formap ORDER BY formap");
       
		$edit->usuario = new autoUpdateField('usuario',$this->session->userdata('usuario'),$this->session->userdata('usuario'));
        
        $edit->cuenta_rein = new inputField('Cuenta a reintegrar', 'cuenta_rein');
		$edit->cuenta_rein->size     = 12;
		$edit->cuenta_rein->append($btn2.' Cuenta a Reintegrar');
        
        $edit->proveedc = new inputField("Proveedor que debe reintegrar", "proveedc");
		$edit->proveedc->size = 12;
		$edit->proveedc->maxlength=5;
        $edit->proveedc->append($boton2.' Se debe crear como CLIENTE');
        
        $edit->rein = new inputField('Monto Reintegrado', 'rein');
		$edit->rein->size = 10;
		$edit->rein->maxlength=15;
		$edit->rein->css_class ='inputnum';
		$edit->rein->insertValue = '0';
		$edit->rein->onkeyup ='total_manual()';
                
        //**************************
		//  Campos para el detalle
		//**************************
		$edit->docu = new dropdownField('Documento <#o#>', 'docu_<#i#>');
		$edit->docu->db_name  = 'docu';
		$edit->docu->options("SELECT codigo,descrip FROM tpagos");
		$edit->docu->rel_id   = 'itpprot';
		$edit->docu->style    = 'width:100%';
		
		$edit->cuenta = new inputField('Cuenta <#o#>', 'cuenta_<#i#>');
		$edit->cuenta->size     = 12;
		$edit->cuenta->maxlength= 10;
		$edit->cuenta->readonly  = true;
		$edit->cuenta->db_name  = 'cuenta';
		$edit->cuenta->rel_id   = 'itpprot';
		//$edit->cuenta->rule     = 'required';
		$edit->cuenta->append($btn);

		$edit->desca = new inputField('Descripci&oacute;n <#o#>', 'desca_<#i#>');
		$edit->desca->db_name='desca';
		$edit->desca->rel_id='itpprot';
		$edit->desca->rule = 'strtoupper';
		$edit->desca->size    = 35;
		
		$edit->ruc = new inputField('RUC <#o#>', 'ruc_<#i#>');
		$edit->ruc->db_name='ruc';
		$edit->ruc->rel_id='itpprot';
		$edit->ruc->rule = 'strtoupper';
        //$edit->ruc->append($btn1);
        //$edit->ruc->insertValue = $rif;
		$edit->ruc->size    = 11;
		$edit->ruc->maxlength= 11;
		
		$edit->tipo = new dropdownField('Tipo <#o#>', 'tipo_<#i#>');
		$edit->tipo->db_name  = 'tipo';
		$edit->tipo->option("","");
		$edit->tipo->option("D","D");
		$edit->tipo->option("C","C");
		$edit->tipo->rel_id   = 'itpprot';
		$edit->tipo->rule     = 'positive';
		$edit->tipo->autocomplete=false;
		$edit->tipo->onchange ='importe(<#i#>)';
		$edit->tipo->style    = 'width:100%';
		
		$edit->importe = new inputField('Importe <#o#>', 'importe_<#i#>');
		$edit->importe->db_name='importe';
		$edit->importe->size=12;
		//$edit->importe->readonly=true;
        //$edit->importe->rule = 'required';
		$edit->importe->css_class='inputnum';
		$edit->importe->rel_id   ='itpprot';
		$edit->importe->onkeyup  ='importe(<#i#>)';
		
		$edit->creditos = new inputField('creditos <#o#>', 'creditos_<#i#>');
		$edit->creditos->db_name='creditos';
		$edit->creditos->size=12;
		$edit->creditos->css_class='inputnum';
		$edit->creditos->rel_id   ='itpprot';
		$edit->creditos->readonly=true;
		$edit->creditos->onkeyup  ='importe(<#i#>)';
        
        $id=$edit->_dataobject->get("id");
               
        $edit->buttons('delete','save', 'undo', 'add_rel','back'); 	
        $edit->build();
        
        $conten['form']  =&  $edit;
        
        //echo $mSQL;
        
		IF($edit->_status=='show'){
			$mSQL="SELECT * FROM relacion WHERE itppro='$id'";
			$mSQL_1=$this->db->query($mSQL);
			$conten['result']=$mSQL_1->result();	
			$data['content'] = $this->load->view('view_sprm', $conten,true);
            
		}else{
			$mSQL_1=$this->db->query($mSQL);
			$conten['cantmd']=$mSQL_1->num_rows();
			$conten['result']=$mSQL_1->result();	
			$data['content'] = $this->load->view('view_pagos', $conten,true);
		}
				
		$data['title']   = heading('Pago por Proveedor '.$edit->serie->value.'-'.$edit->numero->value);

		$data['style']  = style('redmond/jquery-ui-1.8.1.custom.css');
		
		$data['script']  = script('jquery.js');
		$data['script'] .= script('jquery-ui.js');
		$data['script'] .= script('plugins/jquery.numeric.pack.js');
		$data['script'] .= script('plugins/jquery.numeric.pack.js');
		$data['script'] .= script('plugins/jquery.floatnumber.js');
		$data['script'] .= script('nformat.js');

		$data['head']    = $this->rapyd->get_head();
		$this->load->view('view_ventanas', $data);
	}
	function chexiste($codigo){
		
		$numero=$this->input->post('numero');
		$serie =$this->input->post('serie');
		
		$numero =str_pad($numero, 11, "0", STR_PAD_LEFT);
		$serie  =str_pad($serie, 3, "0", STR_PAD_LEFT);
		
		$chek=$this->datasis->dameval("SELECT COUNT(*) FROM itppro WHERE serie='$serie' AND numero='$numero'");
		
		$chek2=$this->datasis->dameval("SELECT COUNT(*) FROM bmov  WHERE banco='$serie' AND clipro='P' AND numero='$numero'");
		
		if (($chek > 0)||($chek2>0)){
			$this->validation->set_message('chexiste',"El numero de comprobante $numero ya se encuetra registrado en pago a proveedores o movimientos de bancos");
			return FALSE;
		}else {
		 return TRUE;
		}
		
	}
	function _pre_delete($do){
		
        $id=$do->get('id');
        
        //echo $id;
        $proveed =$do->get('proveed');
        $numero  =$do->get('numero');
        $serie   =$do->get('serie');
        $tipo    =$do->get('tipo');
        
        $mSQL_1=$this->db->query("SELECT monto,cod_prv,numero,proveed,factura,serief FROM relacion WHERE itppro='$id'");
             
        foreach($mSQL_1->result() as $items ){
			
            $this->db->query("UPDATE sprm SET abonos=abonos-$items->monto WHERE cod_prv='$items->cod_prv' AND proveed='$items->proveed' AND numero='$items->factura' AND seriep='$items->serief'");
      
		}
        
        $mSQL_2=$this->db->query("DELETE FROM relacion WHERE itppro='$id'");
        $mSQL_3=$this->db->query("DELETE FROM bmov WHERE idabono='$id' AND clipro='P'");
        $mSQL_3=$this->db->query("DELETE FROM sprm WHERE transac='$id' AND tipo_doc='$tipo'");
            
		logusu('ITPPRO',"PAGO al proveedor $tipo $proveed numero $serie-$numero ELIMINADO");
	}
    function _pre_insert($do){
         
        $fecha   =$do->get('fecha');
        $fechac  =$do->get('fechac');
        $serie   =$do->get('serie');
        $cambio  =$do->get('cambio');
             
        $cuenta=$this->datasis->dameval("SELECT cuenta FROM bancos WHERE codigo='$serie'");
        $moneda=$this->datasis->dameval("SELECT moneda FROM bancos WHERE codigo='$serie'");
        
        $tipo2=$do->get('tipo2');
                 
        $do->set('moneda',$moneda);
        $do->set('cuenta',$cuenta);
        $do->set('fechac',$fecha);
                
        $tsoles  = $this->input->post('smonto');
        $tdolar  = $this->input->post('monto');
              
        if (($tdolar<=0)||($tsoles<=0)){
			echo "<span style='color:red' align='center'>Debe ingresar una cantidad mayor a 0,00</span>";
			$this->validation->set_message('pre_insert',"Error al ingresar informacion , debe registrar un pago mayor a 0,00");
			return FALSE;
		}else {
			
			IF($moneda=='01'){
                $monto=$tsoles;
            }else{
                $monto=$tdolar;
            }
			$do->set('monto',$monto);
			return TRUE;
		}
        			
		return true;
	}
	function _insertsprm($id,$tipo2){
              
        //Seleciona datos de encabezado de factura
        
        $mSQL=$this->db->query("SELECT  tipo,  serie,  numero,  cuenta,  ccosto,  proveed,  nombre,  
        rif,  fecha,  monto,  aplica,  formap,  referen,  cambio,  moneda,  estampa,  cajachica,  
        detraccion,  usuario,  condi1,  id FROM itppro
        WHERE id='$id'");
              
        $row = $mSQL->row();
        
        $usuario =$this->session->userdata['usuario'];
                           			
		$mSQL_1=$this->db->query("INSERT INTO `sprm` (`cod_prv`, `nombre`, `tipo_doc`, `numero`, `fecha`, `subtotal`,`monto`,`transac`, `estampa`, `hora`, `usuario`,`factura`, `proveed`, `montodetra`, `totalg`,`seriep`,`seriei`,`moneda`,`cambio`,`numeroi`,`cajachica`,`abonos`,`vence`) 
		VALUES ('$row->proveed', '$row->nombre', '$tipo2', '$row->numero', '$row->fecha','$row->monto','$row->monto','$row->id',CURRENT_TIMESTAMP(),CURRENT_TIME(),'$usuario','$row->numero','$row->proveed','0','$row->monto','$row->serie','$row->serie','$row->moneda','$row->cambio','$row->numero','$row->cajachica','$row->monto','$row->fecha');");
		
		$this->db->query("DELETE FROM itpprot where id='$id' and importe=0");
    
    }
	function _post_insert($do){
		
		
		$numero=$do->get('numero');
		$serie=$do->get('serie');
        $proveed=$do->get('proveed');
        $monto=$do->get('monto');
        $nombre=$do->get('nombre');
        $referen=$do->get('referen');
        $fecha=$do->get('fecha');
        $condi1=$do->get('condi1');
        $formap=$do->get('formap');
        $id=$do->get('id');
        $cajachica=$do->get('cajachica');
        $detraccion=$do->get('detraccion');
        $moneda=$do->get('moneda');
        $usuario=$this->session->userdata['usuario'];
        $tipo2=$do->get('tipo');
        $rein=$do->get('rein');
        $rif    =$do->get('rif');
		$cambio =$do->get('cambio');
		$cod_clip    =$do->get('proveedc');
		$seriei      =$do->get('serie');
		$numeroi     =$do->get('numero');
        $cuenta_rein =$do->get('cuenta_rein');
        
                
        $cajero=1;
            
        //insertar registro en movimientos de bancos bancos
            
        $mSQL=$this->db->query("INSERT INTO bmov(banco,numero,formap,referencia,monto,fecha,observacion,cajero,idabono,recepcion,usuario,clipro)
                                         VALUES('$serie','$numero','$formap','$referen','$monto','$fecha','$condi1','$cajero','$id','$fecha','$usuario','P')");
                                        
		
		$i=$o=$totalg=0;
        
        $factura   = $this->input->post('factura');
        $serief    = $this->input->post('serief');
        $proveedor = $this->input->post('proveedor');
        $cod_prv   = $this->input->post('cod_prv');
        $numerof   = $this->input->post('numerof');
        $pago      = $this->input->post('pago');
        $cant      = $this->input->post('cant');
        $tipodd    = $this->input->post('tipodd');
        $cmontos    = $this->input->post('cmontos');
        $cmontod    = $this->input->post('cmontod');
        
		//echo 'aqui '.$cant;
		
		
		while($o<$cant){
			
			//echo 'items:'.$o;	
			
			$array=array('0'=>$factura[$i],
						'1'=>$cod_prv[$i],
						'2'=>$pago[$i],
						'3'=>$proveedor[$i],
						'4'=>$serief[$i],
						'5'=>$numerof[$i],
                        '5'=>$tipodd[$i],
                        '6'=>$cmontos[$i],
                        '7'=>$cmontod[$i]);
            
            //Proveedor princiapl
                        
            
            IF($pago[$i]>0){
            
				$mSQL_1=$this->db->query("INSERT INTO relacion (numero,serie,factura,serief,proveed,cod_prv,monto,itppro,tipo,cmontos,cmontod)VALUES('$numero','$serie','$factura[$i]','$serief[$i]','$proveedor[$i]','$cod_prv[$i]','$pago[$i]','$id','$tipo2','$cmontos[$i]','$cmontod[$i]');");
            
			}
			
			$abonos=$this->datasis->dameval("SELECT SUM(monto) FROM relacion WHERE proveed='$proveedor[$i]' AND cod_prv='$cod_prv[$i]' AND factura='$factura[$i]' and serief='$serief[$i]'");
            
            $this->db->query("UPDATE sprm SET abonos='$abonos',ultiabonado='$pago[$i]' WHERE proveed='$proveedor[$i]' AND cod_prv='$cod_prv[$i]' AND factura='$numerof[$i]' and tipo_doc='$tipodd[$i]' and seriep='$serief[$i]' ");
            
            $i++;
			$o++;
		}
		
		$this->_insertsprm($id,$tipo2);
		
		$mSQL_D=$this->db->query("SELECT * FROM itpprot WHERE id='$id' AND docu='RI'");
        $usuario=$this->session->userdata['usuario'];
        
        foreach($mSQL_D->result() as $items ){
               		
            $ntransa =$this->datasis->fprox_numero('ntransa');
            $num     =$this->datasis->fprox_numero('nrein');
            $nrein   = substr($num,1,10);
            
            //$descc=$this->datasis->dameval("SELECT descrip FROM cpla WHERE cuenta='$cuenta_rein'");
            
            $this->db->query("UPDATE itppro SET aplica=aplica+$rein WHERE id='$id'");
            
            $this->db->query("INSERT INTO itpagos (cuenta,  compro,  moneda,  serie,  numero,  transac,  tipo,  cod_cli,  monto, fecha,  vence,  dias,  observa,  usuario,  estampa,  abonado,  cambio,id_rein) values
            ('$items->cuenta','RI','$moneda','001','R$nrein','$ntransa','RI','$proveed','$items->importe',$fecha, $fecha,'1','REINTEGRO DE PROVEEDOR POR  G$seriei-$numeroi', '$usuario',CURRENT_TIMESTAMP(),'X','$cambio','$id')");
             
            
            $this->db->query("INSERT INTO smov (moneda,tipo_doc,serie,numero,fecha,cod_cli,  nombre, monto ,  usuario,transac,vence)
                                                VALUES('$moneda','RI','001','R$nrein',$fecha,'$proveed','$nombre','$items->importe','$usuario','$ntransa',CURDATE())");   
        }
        
        $mSQL_R=$this->db->query("SELECT * FROM itpprot WHERE id='$id' AND docu='RE'");
        
         foreach($mSQL_R->result() as $items ){
			 
			$ntransa =$this->datasis->fprox_numero('ntransa');
            $num     =$this->datasis->fprox_numero('nrem');
            $nrein   = substr($num,1,10);
               
			$this->db->query("INSERT INTO sprm (cod_prv,  nombre,  tipo_doc,  numero,  factura,  seriep,  seriei,  numeroi,  proveed,  transac,  fecha,  subtotal,   monto,   totalg,  vence, usuario,  cajachica, moneda,  cambio,observa1,estampa,hora,id_rein) values
			('$proveed','$nombre', 'RE',  'R$nrein',  'R$nrein',  '001',  '001',  'R$nrein',  '$proveed',  '$ntransa',  CURDATE(),  '$items->importe', '$items->importe', '$items->importe', CURDATE(),'$usuario', 'N', '$moneda', '$cambio','REMBOLSO A PROVEEDOR POR G$seriei-$numeroi',CURRENT_TIMESTAMP(),CURRENT_TIME(),'$id')");
	
            
        }
        
        $this->db->query("UPDATE itpprot SET ruc='$rif' WHERE id='$id' and ruc=''");
              
		logusu('ITPPRO',"PAGO al proveedor $proveed numero $serie-$numero CREADO");
		
	}
    function _adelantos($id,$tipo2){
        
         $tot=$this->datasis->dameval("SELECT SUM(monto) FROM relacion WHERE itppro='$id' and tipo='$tipo2'");
         $tt =$this->datasis->dameval("SELECT SUM(importe) FROM itpprot WHERE id='$id' and tipo='D'");
         $t=$tot+$tt;
         $this->db->query("UPDATE sprm   SET abonos='$t' WHERE transac='$id' and tipo_doc='$tipo2'");
         $this->db->query("UPDATE itppro SET aplica='$t' WHERE id='$id'");
        
    
    }
	function arregla(){
		
		$query=$this->db->query("SELECT proveed,cod_prv,factura,serief  FROM relacion");
        
        foreach($query->result() as $items ){

			$abono=$this->datasis->dameval("SELECT SUM(monto) FROM relacion WHERE proveed='$items->proveed' AND cod_prv='$items->cod_prv' AND factura='$items->factura' and serief='$items->serief'");
			
			$this->db->query("UPDATE sprm SET abonos='$abono' WHERE proveed='$items->proveed' AND cod_prv='$items->cod_prv' AND factura='$items->factura' and seriep='$items->serief'");
		}
			
	
	}
     
}
?>
